Skip to content

Latest commit

 

History

History
74 lines (63 loc) · 1.94 KB

File metadata and controls

74 lines (63 loc) · 1.94 KB

1915. Number of Wonderful Substrings

A wonderful string is a string where at most one letter appears an odd number of times.

  • For example, "ccjjc" and "abab" are wonderful, but "ab" is not.

Given a string word that consists of the first ten lowercase English letters ('a' through 'j'), return the number of wonderful non-empty substrings in word. If the same substring appears multiple times inword, then count each occurrence separately.

A substring is a contiguous sequence of characters in a string.

Example 1:

Input: word = "aba" Output: 4 Explanation: The four wonderful substrings are underlined below: - "aba" -> "a" - "aba" -> "b" - "aba" -> "a" - "aba" -> "aba" 

Example 2:

Input: word = "aabb" Output: 9 Explanation: The nine wonderful substrings are underlined below: - "aabb" -> "a" - "aabb" -> "aa" - "aabb" -> "aab" - "aabb" -> "aabb" - "aabb" -> "a" - "aabb" -> "abb" - "aabb" -> "b" - "aabb" -> "bb" - "aabb" -> "b" 

Example 3:

Input: word = "he" Output: 2 Explanation: The two wonderful substrings are underlined below: - "he" -> "h" - "he" -> "e" 

Constraints:

  • 1 <= word.length <= 105
  • word consists of lowercase English letters from 'a' to 'j'.

Solutions (Rust)

1. Solution

implSolution{pubfnwonderful_substrings(word:String) -> i64{let word = word.as_bytes();letmut count = [0;1024];letmut mask = 0;letmut ret = 0; count[0] = 1;for i in0..word.len(){ mask ^= 1 << (word[i] - b'a');for j in0..10{ ret += count[mask ^ (1 << j)];} ret += count[mask]; count[mask] += 1;} ret }}
close